#include<stdio.h>
#include<stdlib.h>
#include<vector>
using namespace std;
void swap(int &a,int &b);
vector<int> quickSort(vector<int>& arr,int k,int l,int r);
vector<int> getLeastNums(vector<int>& arr,int k);
void print_Ve(vector<int> arr);

int main(int argc,char const *argv[]){
    vector<int> arr={1,5,6,2,7,4,3,10,8,9};
    vector<int> res=getLeastNums(arr,7);
    print_Ve(res);
    return 0;
}

void swap(int &a,int &b){
    int temp=a;
    a=b;
    b=temp;
}
vector<int> quickSort(vector<int>& arr, int k, int l, int r) {
    int i = l, j = r;
    while (i < j) {
        while (i < j && arr[j] >= arr[l]) j--;
        while (i < j && arr[i] <= arr[l]) i++;
        swap(arr[i], arr[j]);
    }
    swap(arr[i], arr[l]);
    if (i > k) return quickSort(arr, k, l, i - 1);
    if (i < k) return quickSort(arr, k, i + 1, r);
    vector<int> res;
    res.assign(arr.begin(), arr.begin() + k);
    return res;
}
vector<int> getLeastNums(vector<int>& arr,int k){
    if(k>=arr.size())
        return arr;
    else
        return quickSort(arr,k,0,arr.size()-1);
}
void print_Ve(vector<int> arr){
    for(vector<int>::iterator it=arr.begin();it!=arr.end();it++)
        printf("%d ",*it);
}